package cn.tedu.seri;

import java.io.*;

/*本类用于测试序列化与反序列化
* 序列化:是把程序中的Java对象,永久保存在磁盘中,相当于是写出的过程
* 方向:out,用到的流是:ObjectOutputStream
* 反序列化:是指把已经序列化在文件中保存的数据,读取/恢复到java程序中的过程*/
public class TestSerializable {
    public static void main(String[] args) {
        method1();//本方法用于完成序列化的功能
        method2();//本方法用于完成反序列化的功能
    }
    /*反序列化方法*/
    private static void method2() {
        ObjectInputStream in=null;
        try{
            //创建反序列化流对象
            in=new ObjectInputStream(new FileInputStream("F:\\ready\\1.txt"));
            //通过OIS反序列化读取对象
            System.out.println(in.readObject());
            System.out.println("反序列化成功");
        } catch (Exception e) {
            System.out.println("反序列化失败");
            e.printStackTrace();
        }finally {
            //关流
            try {
               in.close();
             } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
    /*序列化方法*/
    private static void method1() {
        ObjectOutputStream out =null;
        try{
            //指定要序列化输出的对象
            out=new ObjectOutputStream(new FileOutputStream("F:\\ready\\1.txt"));
       //通过OOS流对象来序列化输出的Student对象
            Student obj=new Student("海绵宝宝",3,"大海里",'男');
            out.writeObject(obj);

            System.out.println("序列化成功!");
        } catch (Exception e) {
            System.out.println("序列化失败!");
            e.printStackTrace();
        }finally {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
